package pruebas;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;

import edu.cibertec.alquiler.entity.DetalleUsuarioVideo;
import edu.cibertec.alquiler.entity.Estado;

public class PruebasJPAReport {
	
	public static void main(String[] args) {
		new PruebasJPAReport();
	}
	private EntityManager em;
	private EntityManagerFactory emf;
	public PruebasJPAReport() {
		emf= Persistence.createEntityManagerFactory("Proyecto-Alquiler");
		em=emf.createEntityManager();
		List<DetalleUsuarioVideo> lstDetalleUsuarioVideo=null;
		DetalleUsuarioVideo objDetalleUsuarioVideo=null;
		int parametro=1;
		int numdias;
		double pagoAlquiler=0;
		Estado objEstado=null;
		try {
			objDetalleUsuarioVideo= em.find(DetalleUsuarioVideo.class, parametro);
			
			System.out.println("FECHA"+ objDetalleUsuarioVideo.getFecha() + " YYYY NUMDIAS :" + objDetalleUsuarioVideo.getNumDias());
			System.out.println("MI FECHA DE ESTIMACION "+diferenciaDeFechas(objDetalleUsuarioVideo.getFecha(),new Date()));
			em.getTransaction().begin();
			numdias=diferenciaDeFechas(objDetalleUsuarioVideo.getFecha(), new Date());
			
			if (numdias<=objDetalleUsuarioVideo.getNumDias()) {
				System.out.println("ES MENOR O IGUAL");
				pagoAlquiler=15;
				System.out.println("EL CLIENTE PAGO "+ pagoAlquiler);
			}else {
				System.out.println("ES MAYOR");
				
				pagoAlquiler=15 +(numdias -1) + 5;
				System.out.println("EL CLIENTE PAGO"+ pagoAlquiler);
			}
			
			objDetalleUsuarioVideo.setMora(pagoAlquiler);
			
			objEstado= new Estado();
			objEstado.setCodEstado(5);
			objDetalleUsuarioVideo.setTbEstado(objEstado);
			
			em.merge(objDetalleUsuarioVideo);
			em.flush();
			em.getTransaction().commit();
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			em.close();
		}
	}
	
	
	
	
	public int diferenciaDeFechas(Date fechaInicial, Date fechaFinal){
		DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);
		String fechaInicioString = df.format(fechaInicial);
		try {
		fechaInicial = df.parse(fechaInicioString);
		} catch (ParseException ex) {
		}
		String fechaFinalString = df.format(fechaFinal);
		 try {
		fechaFinal = df.parse(fechaFinalString);
		} catch (ParseException ex) {
		}
		 long fechaInicialMs = fechaInicial.getTime();
		 
		 long fechaFinalMs = fechaFinal.getTime();
		long diferencia = fechaFinalMs - fechaInicialMs;
		double dias = Math.floor(diferencia / (1000 * 60 * 60 * 24));
		return ((int) dias);
	}
	
}
